package com.qls.core.constant;

public class Constant {
    /**
     * 酒店 房型 rp 状态
     */
    public enum Task {
        /**
         *
         */
        HOTEL_ALL_PULL("全量酒店拉取", "1"),
        HOTEL_PUSH("分组酒店推送", "3"),
        HOTEL_PULL("酒店初始化", "HOTEL_PULL"),
        /**
         *
         */
        GROUP_PUSH("分组酒店推送", "GROUP_PUSH");

        private String name;
        private String value;

        Task(String name, String value) {
            this.value = value;
            this.name = name;
        }

        public String getName() {
            return name;
        }

        public void setName(String name) {
            this.name = name;
        }

        public String getValue() {
            return value;
        }

        public void setValue(String value) {
            this.value = value;
        }
    }

    public enum RabbitMq {

        /**
         * 价态更新队列
         */
        RATES("rates"),

        /**
         * 酒店更新队列
         */
        HOTEL("hotel"),

        /**
         * rp更新队列
         */
        RP("rp"),

        /**
         * 酒店初始化
         */
        INIT("INIT"),

        /**
         * 价态回调
         */
        CALLBACK_RATES("CALLBACK_RATES"),

        /**
         * rp回调
         */
        CALLBACK_RP("CALLBACK_RP"),

        /**
         * 酒店回调
         */
        CALLBACK_HOTEL("CALLBACK_HOTEL"),

        /**
         * 交换机
         */
        HOTEL_EXCHANGE("HOTEL_EXCHANGE");

        private String value;

        RabbitMq(String value) {
            this.value = value;
        }

        public String getValue() {
            return value;
        }
    }

    public enum Redis {
        /**
         * 缓存酒店id和分销商id
         */
        ALL_HOTEL_LIST("ALL_HOTEL_LIST"),
        /**
         * rpCode对应的自定义价格政策和推送价格用的酒店，房型
         */
        GOODS_BL_CRP_HTL_ROOM_RP_STORE("GOODS_BL_CRP_HTL_ROOM_RP_STORE"),
        /**
         * rpCode对应的自定义价格政策和推送价格用的酒店，房型
         */
        GOODS_BL_CRP_HTL_ROOM_RP_("GOODS_BL_CRP_HTL_ROOM_RP_"),
        /**
         * 缓存酒店和店铺的对应关系
         */
        HOTEL_BL_STORE("HOTEL_BL_STORE"),
        /**
         * rp所属店铺
         */
        RP_BL_STORE("RP_BL_STORE"),
        /**
         * 店铺0库存推送日期
         */
        STORE_ZERO_DATE("STORE_ZERO_DATE"),
        /**
         * 自定义价格政策使用的 自定义价格加幅
         */
        CRPID_USE_CPRICE("CRPID_USE_CPRICE"),
        /**
         * 店铺id对应的store
         */
        STOREID_USER_STORE("STOREID_USER_STORE");

        private String value;

        Redis(String value) {
            this.value = value;

        }

        public String getValue() {
            return value;
        }
    }

    /**
     * 采购状态
     * 0 未采购，1 已受理 （ 已提交） 3 已采购 -1 采购失败 -2 已退单
     */
    public enum LocalOrdBuyStatus {
        /**
         * 未采购
         */
        Unpurchased(0),
        /**
         * 已受理
         */
        Accepted(1),
        /**
         * 已采购
         */
        Purchased(3),

        /**
         * 采购失败
         */
        Purchfailure(-1),

        /**
         * 退款失败
         */
        ChargebackFail(-2);


        private Integer value;

        LocalOrdBuyStatus(Integer value) {
            this.value = value;
        }

        public Integer getValue() {
            return value;
        }
    }

    /**
     * 订单状态
     */
    public enum MtOrderStatus {
        /**
         * 订单状态
         */
        book_suc(21, "预订成功"),
        book_fail(22, "预订失败"),
        cancel_suc(31, "取消成功"),
        abort(40, "美团客服介入退款"),
        book_checkin(50, "已入住");

        private int value;
        private String desc;

        MtOrderStatus(int value, String desc) {
            this.value = value;
            this.desc = desc;
        }

        /**
         * 通过value取枚举
         *
         * @param value
         * @return
         */
        public static MtOrderStatus getStatusByValue(Integer value) {
            if (value == null) {
                return null;
            }
            int valueKey = value;
            for (MtOrderStatus enums : MtOrderStatus.values()) {
                if (enums.getValue() == valueKey) {
                    return enums;
                }
            }
            return null;
        }

        /**
         * 通过value取描述
         *
         * @param value
         * @return
         */
        public static String getDescByValue(int value) {
            for (MtOrderStatus enums : MtOrderStatus.values()) {
                if (enums.getValue() == value) {
                    return enums.getDesc();
                }
            }
            return "";
        }

        public int getValue() {
            return value;
        }

        public String getDesc() {
            return desc;
        }
    }

}
